/**
 * @file i18next 实例配置文件
 * @description
 * 这个文件负责初始化 i18next 库，并将其配置为在客户端和服务端中使用。
 * 最后导出一个已配置好的 i18n 实例，供整个应用使用。
 *
 * @link https://www.i18next.com/
 */

import i18n from "i18next";

// 导入不同语言的翻译文件。
// 这些 JSON 文件包含了所有用于国际化的文本键值对。
import jp_Translation from "./res/jp/translation.json";//日语1
import hy_Translation from "./res/hy/translation.json";//韩语2
import ey_Translation from "./res/ey/translation.json";//俄语3
import en_Translation from "./res/en/translation.json";//英文4
import aen_Translation from "./res/a-en/translation.json";//美式5
import zhCN_Translation from "./res/zh-CN/translation.json";//中文6
import ftzhCN_Translation from "./res/ftzh-CN/translation.json";//繁体7
import fy_Translation from "./res/fy/translation.json";//法语8
import pt_Translation from "./res/pt/translation.json";//葡萄牙9
import ydl_Translation from "./res/ydl/translation.json";//意大利10
import zy_Translation from "./res/zy/translation.json";//藏语11
import zzy_Translation from "./res/zzy/translation.json";//壮族语12
import my_Translation from "./res/my/translation.json";//苗语13
import yzy_Translation from "./res/yzy/translation.json";//瑶族语14
import ydy_Translation from "./res/dy/translation.json";//印度语15
import dy_Translation from "./res/dy/translation.json";//德语16
import alby_Translation from "./res/alby/translation.json";//阿拉伯语17
import may_Translation from "./res/may/translation.json";//喵语18
import sy_Translation from "./res/sy/translation.json";//手语19
import hxy_Translation from "./res/hxy/translation.json";//火星语20 焱暒語
import ty_Translation from "./res/ty/translation.json";//泰语21 ภาษาไทย
import wyw_Translation from "./res/wyw/translation.json";//文言文22 
import sj_Translation from "./res/sj/translation.json";//诗句23
import ms_Translation from "./res/ms/translation.json";//莫斯电码24
import utf_Translation from "./res/UTF-8/translation.json";//UTF-8 25
import mw_Translation from "./res/mw/translation.json";//盲文 26
import bly_Translation from "./res/bly/translation.json";//波兰 27
import jky_Translation from "./res/jky/translation.json";//捷克 28
import ny_Translation from "./res/ny/translation.json";//鸟语 29
import wwy_Translation from "./res/wwy/translation.json";//汪汪语 30


// 处理在服务端（无 navigator）与客户端环境下读取语言
const getNavigatorLanguage = () => {
  if (
    // @ts-ignore
    typeof navigator !== "undefined" &&
    // @ts-ignore
    typeof navigator.language === "string" &&
    // @ts-ignore
    navigator.language
  ) {
    // @ts-ignore
    return navigator.language;
  }
  return "zh-CN";
};

// 初始化 i18next 实例
i18n.init({
  // `lng`: 设置当前语言。这里使用客户端 `navigator.language` 来获取浏览器的语言设置。
  // 如果没有检测到语言，i18next 将会使用这里指定的 'zh-CN' 作为默认语言。
  lng: getNavigatorLanguage(),

  // `fallbackLng`: 设置回退语言。如果 `lng` 检测到的语言在 `resources` 中不存在对应的翻译，
  // i18next 将会使用这里指定的 'zh-CN' 作为备用语言，以确保总有内容显示。
  fallbackLng: "zh-CN",

  // `debug`: 开启调试模式。在开发环境中设置为 `true`，i18next 会在控制台输出详细信息，
  // 如语言加载、缺失键等，非常有助于调试。在生产环境中应务必设置为 `false` 以避免性能损耗和信息泄露。
  debug: false,

  // `defaultNS`: 设置默认的命名空间（namespace）。
  // 当调用 `t()` 函数且未指定命名空间时，i18next 将会在此处指定的 'translation' 命名空间下查找键。
  defaultNS: "translation",

  // `resources`: 提供翻译资源。这是一个对象，键是语言代码（如 'en', 'zh-CN'），
  // 值是该语言的命名空间和翻译内容。这里我们只用了一个默认的 'translation' 命名空间。
  resources: {
    en: {
      translation: en_Translation,
    },
    hy: {
      translation: hy_Translation,
    },
    ey: {
      translation: ey_Translation,
    },
    jp: {
      translation: jp_Translation,
    },
    fy: {
      translation: fy_Translation,
    },
    dy: {
      translation: dy_Translation,
    },
    pt: {
      translation: pt_Translation,
    },
    yzy: {
      translation: yzy_Translation,
    },
    zy: {
      translation: zy_Translation,
    },
    ydy: {
      translation: ydy_Translation,
    },
    zzy: {
      translation: zzy_Translation,
    },
    my: {
      translation: my_Translation,
    },
    sy: {
      translation: sy_Translation,
    },
    ydl: {
      translation: ydl_Translation,
    },
    alby: {
      translation: alby_Translation,
    },
    may: {
      translation: may_Translation,
    },
    hxy: {
      translation: hxy_Translation,
    },
    ty: {
      translation: ty_Translation,
    },
    wyw: {
      translation: wyw_Translation,
    },
    sj: {
      translation: sj_Translation,
    },
    ms: {
      translation: ms_Translation,
    },
    utf: {
      translation: utf_Translation,
    },
    mw: {
      translation: mw_Translation,
    },
    bly: {
      translation: bly_Translation,
    },
    jky: {
      translation: jky_Translation,
    },
    ny: {
      translation: ny_Translation,
    },
    wwy: {
      translation: wwy_Translation,
    },
    "zh-CN": {
      translation: zhCN_Translation,
    },
    "ftzh-CN": {
      translation: ftzhCN_Translation,
    },
    "a-en": {
      translation: aen_Translation,
    },
  },
});

/**
 * @zh
 * i18next 实例
 * @en
 * i18next instance
 * @aen
 */
export default i18n;
